Collaborative Software Engineering

Development
& Maintenance

Two collaborative software engineering projects focused on system development, evolutionary maintenance, reliability, infrastructure, and long-term maintainability.

Projects
02 Team Projects
Team
10 Members
Focus
Development · Maintenance
01
Project Development + Maintenance

ReserveHub
Evolution

PHP · MySQL · JavaScript · Git
ReserveHub Project
Project Overview

ReserveHub is an open-source restaurant reservation platform developed by a 10-member team. The system provides users with reservation management capabilities while giving administrators and vendors tools for managing platform information and activity.

Evolution

The project evolved from an initial reservation system into a more maintainable platform through a Phase-B maintenance cycle focused on operational transparency, localization, analytics, validation, and environment reliability.

01.01

System Architecture

Initial Three-Tier Architecture
Browser
HTML / CSS / JS
Vanilla PHP
MySQL
01.02

System Evolution

01
Core Reservation System
User authentication, profile management, reservation booking, cancellation, and reservation history.
02
Administrative Functions
Administrative data access and reservation management capabilities.
03
Maintenance Phase
Localization, reporting, analytics, validation, and environment diagnostics were introduced without replacing the original architecture.
01.03

Maintenance Improvements

ReserveHub Maintenance Improvements
A

CSV Data Extraction

A secure administrative export endpoint was introduced for downloading reservation records as CSV files using role-based PHP session validation and PDO prepared statements.

B

Operational Analytics

Daily reservation summaries were introduced through an aggregation endpoint designed to provide operational business intelligence.

C

French Localization

The frontend was extended with French language support, including translated pages and persistent language state across navigation.

D

Client Validation

Client-side reservation validation was added to provide immediate feedback and prevent avoidable invalid submissions.

My Contribution

Environment Integrity
& Diagnostics

ReserveHub Environment Diagnostic Utility

Developed the tools/check_env.php utility to automate validation of the local development environment. The utility performs non-invasive diagnostics and provides actionable feedback before developers begin working with the application.

PHP Compatibility

Verifies that the installed PHP version satisfies the project's minimum requirement of PHP 7.4.0 or newer.

PDO MySQL

Checks whether the mandatory pdo_mysql extension is available for database connectivity.

File Permissions

Validates write permissions for the uploads/ directory using robust path resolution through __DIR__.

CLI Diagnostics

Provides ANSI color-coded diagnostic output to clearly distinguish successful checks, warnings, and errors.

Read-Only Design

The diagnostic utility performs validation without modifying application data or changing the local environment.

Developer Onboarding

Reduces configuration-related issues and provides developers with actionable feedback during initial project setup.

01.04

Maintenance Challenges

01
UI Formatting

French translations were longer than the original English text, creating temporary mobile menu and title formatting issues.

02
Translation Coverage

Dynamic JavaScript elements required additional work to achieve complete localization across the platform.

03
Environment Consistency

Differences between local development environments made automated environment validation valuable for reducing configuration drift.

From reservation
system to
maintainable platform.

The maintenance cycle strengthened ReserveHub by improving operational visibility, user experience, localization, validation, and developer onboarding. The project demonstrates how an existing system can evolve incrementally without replacing its core architecture.

01.05

Team Contributions

Simona Dragomir
Frontend & Localization
Luc Minani
Frontend & Localization
Honorine Ishimwe Twahirwa
Frontend & Localization
Zhouxiaojia Yu
Administrative Data Extraction
Alexandre Muller
Architecture & Diagrams
Daheng Wang
Operational Analytics
Chunru Qiu
Environment Diagnostics
Taylor Adams
Form Validation
Sahar Hasanabadi
Testing & Documentation
02
Project Maintenance

HackCanada
Maintenance

Python · Docker · Kubernetes · Playwright · AI
Project Overview

This maintenance project focused on improving the reliability, performance, maintainability, and deployment infrastructure of an existing AI-powered web scraping and outreach system.

Maintenance Philosophy

Rather than replacing the existing architecture, the maintenance phase addressed specific technical limitations while preserving existing interfaces, workflows, and functionality.

02.01

System Evolution

Maintenance Architecture
CLI
Orchestrator
Web Scraper
AI / Research
Storage
02.02

Maintenance Scope

A

Browser Compatibility

Updated the scraper browser environment from Chrome 120 to Chrome 126 to improve compatibility with modern websites.

B

Failure Handling

Improved handling of temporary HTTP 503 responses so transient upstream failures do not unnecessarily terminate the scraping workflow.

C

Containerization

Packaged the scraper and runtime dependencies into a reproducible Docker environment based on python:3.12-slim.

D

Kubernetes

Deployed the containerized scraper as a Kubernetes Job on a local Docker Desktop Kubernetes cluster.

E

Performance

Introduced asynchronous parallel crawling using asyncio and Playwright's asynchronous API.

F

Reliability

Improved API validation, Google LLM compatibility, SQLite resource management, testing, and output file handling.

My Contribution

Chrome 126 · HTTP 503
Docker · Kubernetes

Chrome 126 HTTP 503 Docker Kubernetes

Developed the tools/check_env.php utility to automate validation of the local development environment. The utility performs non-invasive diagnostics and provides actionable feedback before developers begin working with the application.

Improved the scraper's browser compatibility and reliability, then containerized and deployed the application using Docker and Kubernetes. The work transformed the scraper from a manually configured local process into a more reproducible deployment workflow.

Chrome 120 → 126

Updated the browser identity to represent a more modern Chrome environment and reduce compatibility concerns associated with an outdated browser configuration.

HTTP 503 Handling

Improved handling of temporary upstream server failures so transient HTTP 503 responses are handled more gracefully.

Docker

Packaged Python, Playwright, Chromium, application code, and project dependencies into a reproducible Docker image.

Kubernetes Job

Configured the scraper to execute as a one-time Kubernetes Job using the local Docker Desktop Kubernetes cluster.

End-to-End Validation

Verified that Kubernetes successfully launched the Docker container and that the scraper received an HTTP 200 response.

Future Automation

Established infrastructure that can later support Kubernetes CronJobs, scheduled execution, and persistent storage.

02.03

Infrastructure Pipeline

Local Development → Containerized Deployment
Python
Application
Docker
Image
Kubernetes
Job
Chromium
Scraper
HTTP 200
02.04

Team Maintenance Work

A

Configuration

Event-specific information was moved from hardcoded prompts into environment-based configuration.

B

Company Deduplication

Company names were normalized and domain-based matching was introduced to reduce duplicate company records.

C

OutreachService

Initial and follow-up outreach generation was centralized through a reusable service integrated with the existing CLI.

D

Google LLM Recovery

The deprecated google.generativeai implementation was migrated to the current google-genai SDK.

E

SQLite Resource Fix

Database connections were changed to deterministic cleanup using contextlib.contextmanager and explicit connection closing.

F

Testing & Quality

Automated tests, Ruff checks, Docker validation, API validation, and release version reporting improved project maintainability.

02.05

Performance Benchmark

24.80s
Synchronous · 8 URLs
4.62s
Asynchronous · 8 URLs
81.4%
Execution Time Reduction

The asynchronous crawling implementation reduced the benchmark execution time from 24.80 seconds to 4.62 seconds for eight realistic URLs. The optimization targets the I/O-bound nature of web scraping while maintaining concurrency limits to control resource consumption.

02.06

Maintenance Challenges

01
Anti-Bot Detection

The outdated Chrome 120 browser identity could contribute to compatibility and anti-bot concerns, requiring an updated browser configuration.

02
Backward Compatibility

New asynchronous crawling functionality had to preserve existing synchronous workflows and CLI behavior.

03
Resource Consumption

Parallel browser operations can consume significant memory and increase request pressure, requiring concurrency control.

04
Docker Environment

Differences in file permissions inside Docker caused Ruff EXE002 warnings that required environment-specific validation handling.

05
Dependency Migration

The Google LLM backend relied on a deprecated SDK, requiring migration to the current google-genai package.

06
Database Resources

SQLite connections required deterministic cleanup to prevent resource leakage during repeated pipeline operations.

From local
scraper to
reproducible workload.

The maintenance phase strengthened the AI-powered scraping and outreach system across reliability, performance, deployment, and infrastructure. Docker and Kubernetes improved reproducibility, browser updates improved compatibility, and the wider team contributions improved configuration, testing, database reliability, and application maintainability.

02.07

Team Contributions

Alexandre Muller
Overall Architecture & Integration
Chunru Qiu
Chrome 126 · HTTP 503 · Docker · Kubernetes
Honorine Ishimwe Twahirwa
Configuration · Deduplication · OutreachService
Taylor Adams
Release Versioning · API Validation
Simona Dragomir
Testing · Ruff · Docker Validation
Zhouxiaojia Yu
Google LLM Recovery · SQLite Fix
Heritier Luc Minani
Asynchronous Parallel Crawling
Daheng Wang
Output Directory Handling
Sahar Hasanabadi
Report Organization & Documentation
03

Overall Project Perspective

Build.
Maintain.
Evolve.

These two team projects represent different stages of software engineering practice. ReserveHub focused on evolving an existing reservation platform through structured maintenance and operational improvements. The HackCanada project focused on reliability, infrastructure, deployment, and performance improvements for an AI-powered system.

Across both projects, the work emphasized collaborative development, backward compatibility, maintainability, testing, and practical engineering improvements rather than replacing existing systems unnecessarily.

Team Projects
← Back to Homepage